import Vue from 'vue'

export default ({
  // 初始化时执行
  install () {
    Vue.directive('fofo', {
      inserted (el) { // 指令所在的标签,被插入到真实的DOM上才能执行
        fn(el)
      },
      // 每次点击时出发
      update (el) {
        fn(el)
      }
    })
  }
})

// 封装v-fofo方法
function fn (el) {
  // el指令就是原生的标签
  // 无效
  // v-fofo绑定在van-search组件上(el标签实际上是div)
  // 解决: 原生的方式找到input 里的标签名
  let isFind = false // 标记未找到

  if (el.nodeName === 'INPUT' || el.nodeName === 'TEXTAREA') {
    el.focus()
    isFind = true
  } else {
    // el 本身不是,尝试往里面获取
    const ip = el.querySelector('input')
    const ta = el.querySelector('textarea')
    if (ip && ip.nodeName === 'INPUT') {
      ip.focus()
      isFind = true
    }
    if (ta && ta.nodeName === 'TEXTAREA') {
      ta.focus()
      isFind = true
    }
  }
  // el.querySelector('input').focus()
  // 兜底判断
  if (isFind === false) {
    throw new Error('不要瞎搞,根本就没有输入框')
  }
}
